#ifndef SM3_H
#define SM3_H
/*
 *  func:
 *  param:
 *
 *  return:
 *
 *
 * */
uint32_t ROTL(uint32_t x, int n);
uint32_t Tj(int j);
uint32_t FFj(int j, uint32_t X, uint32_t Y, uint32_t Z);
uint32_t GGj(int j, uint32_t X, uint32_t Y, uint32_t Z);
uint32_t P0(uint32_t X);
uint32_t P1(uint32_t X);
void EB(const uint8_t Bi[64], uint32_t W[68], uint32_t W1[64]);
void CF(const uint8_t Vi[32], const uint8_t Bi[64], uint8_t Vi1[32]);
void SM3Hash(const uint8_t* m, int ml, uint8_t r[32]);
void dumpbuf(const uint8_t* buf, int len);
void calculate_sm3_from_file(const char* filename, uint8_t r[32]);

#endif
